package mongoDB

import scala.collection.JavaConverters._
import scala.collection.JavaConversions._

object DestinosYComentariosService {
  
  def guardarUsuario(usuario: UsuarioMongo) {
    var usuarios: Collection[UsuarioMongo] = SystemDB.collection(classOf[UsuarioMongo])
	usuarios.insert(usuario)
  }

  def agregarDestino(usuario: UsuarioMongo, destino: Destino) {
		var usuarios: Collection[UsuarioMongo] = SystemDB.collection(classOf[UsuarioMongo])
		usuario.getDestinos.add(destino)
		usuarios.update(usuario)
	}
  
  def agregarComentarioADestino(usuario: UsuarioMongo, comentario: Comentario, destino: Destino){
	  var destinos: Collection[Destino] = SystemDB.collection(classOf[Destino])
	  destino.getComentarios.add(comentario)
	  destinos.update(destino)
  }
  
  	def meGustaNoMeGusta(destino: Destino, incrementar: () => Unit) {
  		var destinos: Collection[Destino] = SystemDB.collection(classOf[Destino])
		incrementar()
		destinos.update(destino)
  	}
	
	def meGustaDestino(destino: Destino) {
		meGustaNoMeGusta(destino, () => destino.incrementarMeGusta)
	}
	
	def noMeGustaDestino(destino: Destino) {
		meGustaNoMeGusta(destino, () => destino.incrementarNoMeGusta)
	}
	
	def establecerVisibilidadADestino(destino: Destino, visibilidad: String) {
		var destinos: Collection[Destino] = SystemDB.collection(classOf[Destino])
		destino.setVisibilidad(visibilidad)
		destino.getComentarios.foreach(establecerVisibilidadAComentario(_, visibilidad))
		destinos.update(destino)
	}
	
	def establecerVisibilidadAComentario(comentario: Comentario, visibilidad: String) {
		var comentarios: Collection[Comentario] = SystemDB.collection(classOf[Comentario])
		comentario.setVisibilidad(visibilidad)
		comentarios.update(comentario)
	}

	//NO ESTA TERMINADO, NO SE ME OCURRE COMO HACERLO
	def verPerfil(usuario: UsuarioMongo) {
	  	var usuario: Collection[UsuarioMongo] = SystemDB.collection(classOf[UsuarioMongo])
	  	var destinos: Collection[Destino] = SystemDB.collection(classOf[Destino])
		destinos.filterByVisibleDestination
	}
}